import http from './http.js'

// 用户相关API
export const userApi = {
  // 测试API连接
  test() {
    return http.get('/api/user/test')
  },

  // 用户登录
  login(credentials) {
    return http.post('/api/user/login', credentials)
  },

  // 用户注册
  register(userData) {
    return http.post('/api/user/register', userData)
  },

  // 获取当前用户信息
  getCurrentUser() {
    return http.get('/api/user/me')
  },

  // 获取所有用户（需要管理员权限）
  getAllUsers(params = {}) {
    const queryParams = new URLSearchParams()
    if (params.page) queryParams.append('page', params.page)
    if (params.pageSize) queryParams.append('pageSize', params.pageSize)
    if (params.search) queryParams.append('search', params.search)
    if (params.role) queryParams.append('role', params.role)
    
    const queryString = queryParams.toString()
    return http.get(`/api/user${queryString ? `?${queryString}` : ''}`)
  },

  // 根据ID获取用户
  getUserById(userId) {
    return http.get(`/api/user/${userId}`)
  },

  // 根据用户名获取用户
  getUserByUsername(username) {
    return http.get(`/api/user/by-username/${username}`)
  },

  // 根据邮箱获取用户
  getUserByEmail(email) {
    return http.get(`/api/user/email/${email}`)
  },

  // 根据角色获取用户列表
  getUsersByRole(role) {
    return http.get(`/api/user/by-role/${role}`)
  },

  // 更新手机号
  updatePhone(userId, phoneData) {
    return http.put(`/api/user/${userId}/phone`, phoneData)
  },

  // 更新邮箱
  updateEmail(userId, emailData) {
    return http.put(`/api/user/${userId}/email`, emailData)
  },

  // 上传用户头像到图床
  uploadAvatar(userId, file) {
    const formData = new FormData()
    formData.append('file', file)
    return http.upload(`/api/user/${userId}/avatar/upload`, formData)
  },

  // 获取用户头像URL
  getUserAvatar(userId) {
    return http.get(`/api/user/${userId}/avatar`)
  },

  // 获取当前用户头像URL
  getCurrentUserAvatar() {
    return http.get('/api/user/me/avatar')
  },

  // 更新头像URL（直接设置URL）
  updateAvatar(userId, avatarData) {
    return http.put(`/api/user/${userId}/avatar`, avatarData)
  },

  // 修改密码
  changePassword(userId, passwordData) {
    return http.put(`/api/user/${userId}/password`, passwordData)
  },

  // 验证用户凭据
  validateCredentials(credentials) {
    return http.post('/api/user/validate-credentials', credentials)
  },

  // 验证用户身份信息（用于忘记密码流程）
  verifyIdentity(identityData) {
    return http.post('/api/user/verify-identity', identityData)
  },

  // 重置密码（用于忘记密码流程）
  resetPassword(resetData) {
    return http.post('/api/user/reset-password', resetData)
  },

  // 检查是否为管理员
  isAdmin(userId) {
    return http.get(`/api/user/${userId}/is-admin`)
  },

  // 检查是否为普通用户
  isNormalUser(userId) {
    return http.get(`/api/user/${userId}/is-normal-user`)
  },

  // 检查用户是否有文档权限
  hasPermission(userId, documentId, action) {
    return http.get(`/api/user/${userId}/has-permission/${documentId}/${action}`)
  },

  // 获取用户文档列表
  getUserDocuments(userId) {
    return http.get(`/api/user/${userId}/documents`)
  },

  // 获取用户会话列表
  getUserConversations(userId) {
    return http.get(`/api/user/${userId}/conversations`)
  },

  // 获取用户权限列表
  getUserPermissions(userId) {
    return http.get(`/api/user/${userId}/permissions`)
  },

  // 创建用户（需要管理员权限）
  createUser(userData) {
    return http.post('/api/user', userData)
  },

  // 更新用户信息（需要管理员权限）
  updateUser(userId, userData) {
    return http.put(`/api/user/update/${userId}`, userData)
  },

  // 删除用户（需要管理员权限）
  deleteUser(userId) {
    return http.delete(`/api/user/${userId}`)
  }
}
